Upgrade rust/crates/grpcio-compiler to 0.9.0 Test: make Change-Id: I8776ee9a9b1a2d9c0ea0350cca89f5bfbabed9f3 
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json index da15913..2587a95 100644 --- a/.cargo_vcs_info.json +++ b/.cargo_vcs_info.json 
@@ -1,5 +1,5 @@  {  "git": { - "sha1": "376d262f28aabfb1af755f928c9dd474eebc0e84" + "sha1": "7a48e0bb843e702832c1c3ac024c468dedf0023c"  }  } 
diff --git a/Android.bp b/Android.bp index b4c976d..317b655 100644 --- a/Android.bp +++ b/Android.bp 
@@ -65,4 +65,4 @@  }    // dependent_library ["feature_list"] -// protobuf-2.22.1 +// protobuf-2.24.1 
diff --git a/Cargo.lock b/Cargo.lock index 0f0ebdf..72a664e 100644 --- a/Cargo.lock +++ b/Cargo.lock 
@@ -2,9 +2,9 @@  # It is not intended for manual editing.  [[package]]  name = "anyhow" -version = "1.0.38" +version = "1.0.40"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" +checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"    [[package]]  name = "autocfg" @@ -55,9 +55,9 @@    [[package]]  name = "getrandom" -version = "0.2.2" +version = "0.2.3"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"  dependencies = [  "cfg-if",  "libc", @@ -66,7 +66,7 @@    [[package]]  name = "grpcio-compiler" -version = "0.8.0" +version = "0.9.0"  dependencies = [  "derive-new",  "prost", @@ -93,9 +93,9 @@    [[package]]  name = "indexmap" -version = "1.6.1" +version = "1.6.2"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3"  dependencies = [  "autocfg",  "hashbrown", @@ -112,9 +112,9 @@    [[package]]  name = "libc" -version = "0.2.86" +version = "0.2.94"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"    [[package]]  name = "log" @@ -127,9 +127,9 @@    [[package]]  name = "multimap" -version = "0.8.2" +version = "0.8.3"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"    [[package]]  name = "petgraph" @@ -149,9 +149,9 @@    [[package]]  name = "proc-macro2" -version = "1.0.24" +version = "1.0.27"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"  dependencies = [  "unicode-xid",  ] @@ -209,9 +209,9 @@    [[package]]  name = "protobuf" -version = "2.22.0" +version = "2.23.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f72884896d22e0da0e5b266cb9a780b791f6c3b2f5beab6368d6cd4f0dbb86" +checksum = "45604fc7a88158e7d514d8e22e14ac746081e7a70d7690074dd0029ee37458d6"    [[package]]  name = "quote" @@ -264,9 +264,9 @@    [[package]]  name = "redox_syscall" -version = "0.2.5" +version = "0.2.8"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"  dependencies = [  "bitflags",  ] @@ -282,9 +282,9 @@    [[package]]  name = "syn" -version = "1.0.60" +version = "1.0.72"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82"  dependencies = [  "proc-macro2",  "quote", @@ -306,26 +306,6 @@  ]    [[package]] -name = "thiserror" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]]  name = "unicode-segmentation"  version = "1.7.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -333,9 +313,9 @@    [[package]]  name = "unicode-xid" -version = "0.2.1" +version = "0.2.2"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"    [[package]]  name = "wasi" @@ -345,12 +325,12 @@    [[package]]  name = "which" -version = "4.0.2" +version = "4.1.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef" +checksum = "b55551e42cbdf2ce2bedd2203d0cc08dba002c27510f86dab6d0ce304cba3dfe"  dependencies = [ + "either",  "libc", - "thiserror",  ]    [[package]] 
diff --git a/Cargo.toml b/Cargo.toml index 52ed1ef..52cb1a5 100644 --- a/Cargo.toml +++ b/Cargo.toml 
@@ -13,7 +13,7 @@  [package]  edition = "2018"  name = "grpcio-compiler" -version = "0.8.0" +version = "0.9.0"  authors = ["The TiKV Project Developers"]  description = "gRPC compiler for grpcio"  homepage = "https://github.com/tikv/grpc-rs" @@ -26,6 +26,10 @@  [[bin]]  name = "grpc_rust_plugin"  required-features = ["protobuf-codec"] + +[[bin]] +name = "grpc_rust_prost" +required-features = ["prost-codec"]  [dependencies.derive-new]  version = "0.5"  optional = true 
diff --git a/Cargo.toml.orig b/Cargo.toml.orig index cd2e87e..46c1e8b 100644 --- a/Cargo.toml.orig +++ b/Cargo.toml.orig 
@@ -1,6 +1,6 @@  [package]  name = "grpcio-compiler" -version = "0.8.0" +version = "0.9.0"  edition = "2018"  authors = ["The TiKV Project Developers"]  license = "Apache-2.0" @@ -27,3 +27,7 @@  [[bin]]  name = "grpc_rust_plugin"  required-features = ["protobuf-codec"] + +[[bin]] +name = "grpc_rust_prost" +required-features = ["prost-codec"] 
diff --git a/METADATA b/METADATA index bdd92d1..01fad1f 100644 --- a/METADATA +++ b/METADATA 
@@ -7,13 +7,13 @@  }  url {  type: ARCHIVE - value: "https://static.crates.io/crates/grpcio-compiler/grpcio-compiler-0.8.0.crate" + value: "https://static.crates.io/crates/grpcio-compiler/grpcio-compiler-0.9.0.crate"  } - version: "0.8.0" + version: "0.9.0"  license_type: NOTICE  last_upgrade_date {  year: 2021 - month: 4 - day: 1 + month: 6 + day: 21  }  } 
diff --git a/src/bin/grpc_rust_prost.rs b/src/bin/grpc_rust_prost.rs new file mode 100644 index 0000000..431e625 --- /dev/null +++ b/src/bin/grpc_rust_prost.rs 
@@ -0,0 +1,9 @@ +// Copyright 2021 TiKV Project Authors. Licensed under Apache-2.0. + +extern crate grpcio_compiler; + +use grpcio_compiler::prost_codegen; + +fn main() { + prost_codegen::protoc_gen_grpc_rust_main(); +} 
diff --git a/src/codegen.rs b/src/codegen.rs index 2a41105..e2f6c10 100644 --- a/src/codegen.rs +++ b/src/codegen.rs 
@@ -151,10 +151,6 @@  }  }   - pub fn fn_def(&mut self, sig: &str) { - self.write_line(&format!("fn {};", sig)); - } -  pub fn fn_block<F>(&mut self, public: bool, sig: &str, cb: F)  where  F: Fn(&mut CodeWriter), @@ -502,7 +498,7 @@  MethodType::Duplex => ("stream", req_stream_type, "DuplexSink"),  };  let sig = format!( - "{}(&mut self, ctx: {}, {}: {}, sink: {}<{}>)", + "{}(&mut self, ctx: {}, _{}: {}, sink: {}<{}>)",  self.name(),  fq_grpc("RpcContext"),  req, @@ -510,7 +506,9 @@  fq_grpc(resp_type),  self.output()  ); - w.fn_def(&sig); + w.fn_block(false, &sig, |w| { + w.write_line("grpcio::unimplemented_call!(ctx, sink)"); + });  }    fn write_bind(&self, w: &mut CodeWriter) { 
diff --git a/src/prost_codegen.rs b/src/prost_codegen.rs index e2d7533..4457c02 100644 --- a/src/prost_codegen.rs +++ b/src/prost_codegen.rs 
@@ -2,7 +2,7 @@    use std::io::{Error, ErrorKind, Read};  use std::path::Path; -use std::{fs, io, process::Command}; +use std::{env, fs, io, process::Command, str};    use derive_new::new;  use prost::Message; @@ -510,14 +510,14 @@  buf.push_str(&method.name);  buf.push_str("(&mut self, ctx: ");  buf.push_str(&fq_grpc("RpcContext")); - buf.push_str(", "); + buf.push_str(", _");  buf.push_str(request_arg);  buf.push_str(", sink: ");  buf.push_str(&fq_grpc(response_type));  buf.push('<');  buf.push_str(&method.output_type);  buf.push('>'); - buf.push_str(");\n"); + buf.push_str(") { grpcio::unimplemented_call!(ctx, sink) }\n");  }    fn generate_method_bind(service_name: &str, method: &Method, buf: &mut String) { @@ -536,3 +536,22 @@  buf.push_str(&method.name);  buf.push_str("(ctx, req, resp));\n");  } + +pub fn protoc_gen_grpc_rust_main() { + let mut args = env::args(); + args.next(); + let (mut protos, mut includes, mut out_dir): (Vec<_>, Vec<_>, _) = Default::default(); + for arg in args { + if let Some(value) = arg.strip_prefix("--protos=") { + protos.extend(value.split(",").map(|s| s.to_string())); + } else if let Some(value) = arg.strip_prefix("--includes=") { + includes.extend(value.split(",").map(|s| s.to_string())); + } else if let Some(value) = arg.strip_prefix("--out-dir=") { + out_dir = value.to_string(); + } + } + if protos.is_empty() { + panic!("should at least specify protos to generate"); + } + compile_protos(&protos, &includes, &out_dir).unwrap(); +}